A distributed application includes a plurality of services. Each of the services performs a task or tasks as part of the distributed application. Often the distributed application is placed on a network of computers. The network of computers forms a distributed resource infrastructure where each of the computers forms a node. Performance of the distributed application depends on optimizing a placement of the services onto the nodes.
A first method of the prior art uses parameters for individual nodes to determine a placement of the services onto the nodes. Such parameters include processing and storage capabilities of the nodes.
The first method does not consider relationships among the nodes or among the services in the determination of the placement of the services onto the nodes. A second method of the prior art considers topologies between the services and between the nodes but requires that the topologies be fixed in certain configurations. The second method does not determine a placement of the services onto the nodes where an arbitrary topology exists between the nodes or between the services.
What is needed is a method of determining a placement of services of a distributed application onto nodes of a distributed resource infrastructure taking into account arbitrary topologies between the nodes and between the services.